#!/bin/bash

# 初始化IP为空
ip=""

# 遍历所有网络接口
for interface in $(ip -o -4 addr show | awk '/inet /{split($2,a,":");print a[1]}'); do
    # 获取接口的IPv4地址（排除环回地址）
    temp_ip=$(ip -4 addr show dev "$interface" scope global | grep -Po '(?<=inet )[^/]*' | grep -v '^127\.')

    # 如果找到了非环回地址的有效IP地址，将其赋值给变量ip并跳出循环
    if [[ ! -z "$temp_ip" ]]; then
        ip="$temp_ip"
        break
    fi
done

# 如果没有找到非环回地址，尝试查找局域网地址（scope link）
if [[ -z "$ip" ]]; then
    for interface in $(ip -o -4 addr show | awk '/inet /{split($2,a,":");print a[1]}'); do
        # 获取接口的IPv4地址（包括本地链路地址）
        temp_ip=$(ip -4 addr show dev "$interface" scope link | grep -Po '(?<=inet )[^/]*' | grep -v '^127\.')

        # 如果找到了非环回地址的有效IP地址，将其赋值给变量ip并跳出循环
        if [[ ! -z "$temp_ip" ]]; then
            ip="$temp_ip"
            break
        fi
    done
fi

# 输出局域网IP地址
echo "局域网IP地址: $ip"

# 在这里，你可以在脚本中继续使用变量$ip
# ...

exit 0